192.168.2.110 08:00:27:ed:99:c8 PCS Systemtechnik GmbH
Analyse: Ein ARP-Scan wird durchgeführt, um aktive Hosts im lokalen Netzwerk zu finden.
Bewertung: Der Host `192.168.2.110` wird identifiziert. Die MAC-Adresse gehört zu Oracle VirtualBox.
Empfehlung (Pentester):** Ziel-IP ist bekannt. Führen Sie einen Portscan durch.
Empfehlung (Admin):** Standard-Netzwerk-Monitoring.
[Inhalt der Datei nach Bearbeitung]
...
192.168.2.110 memories.hmv
...
Analyse: Die lokale `/etc/hosts`-Datei wird bearbeitet, um `memories.hmv` der IP `192.168.2.110` zuzuordnen.
Bewertung: Nötig, falls Webdienste oder andere Services auf diesem Hostnamen konfiguriert sind.
Empfehlung (Pentester):** Ermöglicht die Verwendung des Hostnamens in Tools.
Empfehlung (Admin):** Korrekte DNS-/vHost-Konfiguration.
Starting Nmap 7.93 ( https://nmap.org ) at 2022-11-12 00:50 CET Nmap scan report for memories.hmv (192.168.2.110) Host is up (0.000098s latency). Not shown: 65533 closed tcp ports (reset) PORT STATE SERVICE VERSION 22/tcp open ssh OpenSSH 7.9p1 Debian 10+deb10u2 (protocol 2.0) | ssh-hostkey: | 2048 d366a30a23d346e1e66cffef2d0dad7c (RSA) | 256 9335938f6b7b1f11ce3adb0915a5e1ac (ECDSA) |_ 256 364ecb296d6419491547d068d40fc6a5 (ED25519) 80/tcp open http Apache httpd 2.4.38 ((Debian)) |_http-title: Apache2 Debian Default Page: It works |_http-server-header: Apache/2.4.38 (Debian) MAC Address: 08:00:27:ED:99:C8 (Oracle VirtualBox virtual NIC) Aggressive OS guesses: Linux 4.15 - 5.6 (97%), Linux 5.0 - 5.3 (96%), ... (Debian Linux wahrscheinlich) No exact OS matches for host (test conditions non-ideal). Network Distance: 1 hop Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel TRACEROUTE HOP RTT ADDRESS 1 0.10 ms memories.hmv (192.168.2.110) OS and Service detection performed... Nmap done: 1 IP address (1 host up) scanned in ... seconds
Analyse: Ein detaillierter Nmap-Scan (`-sS`, `-sC`, `-T5`, `-A`, `-p-`) wird auf das Ziel durchgeführt.
Bewertung: Zwei Ports sind offen: * **22 (SSH):** OpenSSH 7.9p1 (Debian 10). Relativ aktuell, aber Version 7.9 hat bekannte User Enumeration Schwachstellen. * **80 (HTTP):** Apache 2.4.38 (Debian) mit der Standard-Debian-Seite. Dies deutet darauf hin, dass die Hauptseite nicht konfiguriert ist, aber möglicherweise virtuelle Hosts oder Verzeichnisse existieren.
Empfehlung (Pentester):** Konzentrieren Sie sich auf den Webserver (Port 80). Führen Sie Verzeichnis-Enumeration durch (`gobuster`, `ffuf`), um versteckte Inhalte oder Anwendungen zu finden. Testen Sie SSH auf User Enumeration (CVE-2018-15473), falls Benutzernamen bekannt werden.
Empfehlung (Admin):** Aktualisieren Sie OpenSSH und Apache. Konfigurieren Sie die Apache-Default-Seite oder leiten Sie auf die eigentliche Anwendung um. Härten Sie die Apache-Konfiguration (z.B. Server-Tokens ausblenden).
=============================================================== Gobuster v... ... =============================================================== [+] Url: http://192.168.2.110 ... =============================================================== ... Starting gobuster ... =============================================================== http://192.168.2.110/index.html (Status: 200) [Size: 10701] http://192.168.2.110/robots.txt (Status: 200) [Size: 11] http://192.168.2.110/memories (Status: 401) [Size: 460] <-- Interessant! =============================================================== ... Finished ... ===============================================================
Analyse: `gobuster` wird zur Verzeichnis-Enumeration auf dem Webserver verwendet.
Bewertung: Neben der `index.html` und einer fast leeren `robots.txt` wird das Verzeichnis `/memories` gefunden. Dieses Verzeichnis gibt einen Statuscode `401 Unauthorized` zurück, was bedeutet, dass es existiert, aber eine Authentifizierung erfordert (wahrscheinlich HTTP Basic Authentication).
/memories
Analyse Fortsetzung:** Der Inhalt von `robots.txt` bestätigt das Verzeichnis `/memories`.
Empfehlung (Pentester):** Versuchen Sie, auf `/memories` zuzugreifen. Wenn eine Basic Auth Abfrage kommt, versuchen Sie Standard-Credentials (z.B. `admin:admin`, `admin:password`) oder führen Sie einen Brute-Force-Angriff mit `hydra` durch, falls ein Benutzername bekannt ist oder erraten werden kann.
Empfehlung (Admin):** Verwenden Sie für Verzeichnisschutz idealerweise stärkere Authentifizierungsmethoden als Basic Auth. Wenn Basic Auth verwendet wird, erzwingen Sie starke Passwörter und implementieren Sie Schutz gegen Brute-Force (z.B. `fail2ban`).
- Nikto v2.1.6 --------------------------------------------------------------------------- + Target IP: 192.168.2.110 + Target Hostname: 192.168.2.110 + Target Port: 80 + Start Time: 2022-11-12 00:52:08 (GMT1) --------------------------------------------------------------------------- + Server: Apache/2.4.38 (Debian) + The anti-clickjacking X-Frame-Options header is not present. + The X-XSS-Protection header is not defined. This header can hint to the user agent to protect against some forms of XSS + The X-Content-Type-Options header is not set. This could allow the user agent to render the content of the site in a different fashion to the MIME type + No CGI Directories found (use '-C all' to force check all possible dirs) + Server may leak inodes via ETags, header found with file /, inode: 29cd, size: 5be1b1e4c84f7, mtime: gzip + Allowed HTTP Methods: GET, POST, OPTIONS, HEAD <-- POST korrigiert + OSVDB-3233: /icons/README: Apache default file found. + 7915 requests: 0 error(s) and 6 item(s) reported on remote host + End Time: 2022-11-12 00:52:23 (GMT1) (15 seconds) --------------------------------------------------------------------------- + 1 host(s) tested
Analyse: Nikto wird verwendet, um nach bekannten Webserver-Schwachstellen und Fehlkonfigurationen zu suchen.
Bewertung: Nikto findet keine kritischen Schwachstellen, meldet aber das Fehlen von Sicherheitsheadern (`X-Frame-Options`, `X-XSS-Protection`, `X-Content-Type-Options`), ein mögliches Inode-Leak über ETags und eine Apache-Standarddatei (`/icons/README`).
Empfehlung (Pentester):** Die Nikto-Ergebnisse liefern keine direkten Einstiegspunkte. Konzentrieren Sie sich auf das `/memories`-Verzeichnis.
Empfehlung (Admin):** Implementieren Sie die fehlenden Sicherheitsheader. Entfernen Sie Standarddateien wie `/icons/README`. Konfigurieren Sie ETags, um keine Inodes preiszugeben (oder deaktivieren Sie ETags).
Analyse: Es wird versucht, auf `/memories` zuzugreifen. Da dies eine Basic Auth erfordert, wird ein HTTP-Request (vermutlich mit Burp Suite) modifiziert, um Standard-Credentials (`admin:admin`) im `Authorization`-Header zu senden. Der Base64-kodierte Wert für `admin:admin` ist `YWRtaW46YWRtaW4=`.
POST /memories/ HTTP/1.1 <-- Methode auf POST geändert
Host: 192.168.2.110
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Firefox/102.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8
Accept-Language: de,en-US;q=0.7,en;q=0.3
Accept-Encoding: gzip, deflate
Connection: close
Upgrade-Insecure-Requests: 1
Authorization: Basic YWRtaW46YWRtaW4=
Referer: http://192.168.2.110/memories
Content-Type: application/x-www-form-urlencoded
Content-Length: 0
Analyse Fortsetzung:** Die Antwort des Servers auf den Request mit `admin:admin`-Credentials wird analysiert.
HTTP/1.1 200 OK
Date: Fri, 11 Nov 2022 23:58:34 GMT
Server: Apache/2.4.38 (Debian)
Last-Modified: Mon, 22 Mar 2021 07:53:48 GMT
ETag: "72e-5be1b5db31096-gzip"
Accept-Ranges: bytes
Vary: Accept-Encoding
Content-Length: 1838
Connection: close
Content-Type: text/html
<-- Maskierung: < zu <
... (HTML-Inhalt der Seite /memories/) ...
Bewertung: Der Server antwortet mit `HTTP/1.1 200 OK`. Dies bedeutet, dass die Standard-Credentials `admin:admin` für den Zugriff auf `/memories` gültig waren!
Analyse Fortsetzung:** Der HTML-Inhalt der `/memories`-Seite (der in der HTTP-Antwort enthalten ist) wird untersucht. Darin wird der Benutzername `laura` und ein privater SSH-Schlüssel gefunden.
Benutzername: laura -----BEGIN OPENSSH PRIVATE KEY----- b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAABFwAAAAdzc2gtcn NhAAAAAwEAAQAAAQEA2W+WidI/grDh9S7BHggHhYFtusWhcArliwIzfEUbjxI+YSMxaCpR PmPQHVy9dMWW0Joml9ShJiH8m2STT4vH36vyWpgBmZRAgm3lnfc/CzzI+onbJ8IkfQiG0 ... (SSH Key Body) ... dWp60QAAAAbGF1cmFAbWVtb3JpZXMBAgMEBQ -----END OPENSSH PRIVATE KEY-----
Bewertung: Dies ist ein kritischer Fund. Durch die schwachen Basic Auth Credentials (`admin:admin`) konnte auf eine Seite zugegriffen werden, die einen Benutzernamen (`laura`) und den zugehörigen privaten SSH-Schlüssel preisgibt. Der Schlüssel scheint nicht passwortgeschützt zu sein (keine `aes-cbc`-Angabe im Header).
Analyse Fortsetzung:** Der gefundene SSH-Schlüssel wird in einer lokalen Datei (`laurarsa`) gespeichert und die Berechtigungen auf `600` gesetzt.
Analyse Fortsetzung:** Es wird versucht, sich mit dem gefundenen Schlüssel und dem Benutzernamen `laura` per SSH anzumelden.
The authenticity of host 'memories.hmv (192.168.2.110)' can't be established.
ED25519 key fingerprint is SHA256:134Y8PiTLRvyPe9VY8s4KBQlyghWccugn+abbL+zM.
...
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added 'memories.hmv' (ED25519) to the list of known hosts.
Linux memories 4.19.0-14-amd64 #1 SMP Debian 4.19.171-2 (2021-01-30) x86_64
The programs included with the Debian GNU/Linux system are free software;
...
Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, ...
Bewertung: Der SSH-Login als Benutzer `laura` mit dem gefundenen privaten Schlüssel ist erfolgreich. Der initiale Zugriff auf das System wurde erlangt.
Empfehlung (Pentester):** Führen Sie Enumeration als `laura` durch: Prüfen Sie `sudo -l`, SUID-Dateien, Cronjobs, Home-Verzeichnis. Suchen Sie das User-Flag.
Empfehlung (Admin):** Ändern Sie sofort das Basic Auth Passwort für `/memories`. Entfernen Sie den privaten Schlüssel von der Webseite. Verwenden Sie niemals Standard-Credentials. Private Schlüssel dürfen niemals öffentlich zugänglich sein.
Analyse: Als Benutzer `laura` werden die `sudo`-Rechte überprüft.
Matching Defaults entries for laura on memories:
env_reset, mail_badpass, secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin
User laura may run the following commands on memories:
(lucy) NPASSWD: /usr/bin/whiptail
Bewertung: `laura` darf das Programm `/usr/bin/whiptail` als Benutzer `lucy` ohne Passwort (`NOPASSWD`) ausführen. `whiptail` wird verwendet, um Dialogboxen in der Shell anzuzeigen. Einige Optionen, wie `--textbox`, erlauben das Anzeigen von Dateiinhalten.
Analyse Fortsetzung:** Die Home-Verzeichnisse werden aufgelistet.
laura lucy
Analyse Fortsetzung:** Es wird versucht, die User-Flag von `lucy` direkt zu lesen, was fehlschlägt.
cat: ../lucy/user.txt: Permission denied
Analyse Fortsetzung:** Die `sudo`-Regel für `whiptail` wird ausgenutzt, um auf Dateien als Benutzer `lucy` zuzugreifen. Es wird versucht, den privaten SSH-Schlüssel von `lucy` (`/home/lucy/.ssh/id_rsa`) mithilfe der `--textbox`-Option von `whiptail` anzuzeigen.
[Hilfetext von whiptail wird angezeigt, da Höhe und Breite fehlen]
┌──────────────────────────────────────────────────────────────────────────────┐ │ │ │ -----BEGIN OPENSSH PRIVATE KEY----- │ │ b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAABFwAAAAdzc2gtcn │ │ NhAAAAAwEAAQAAAQEAvI9G4zVnp7XhQzDNp8mC3rryq7HNtS1+D8gwZEm1EH2Dfuw0Yb │ │ YCZRWkvaBxM+vAZ+fm7/KdftdShHfDx/Wo/56CIRXCzVjzdPIfyaCxlj5M5h0zZM5QKKND │ │ txGfWPEhKME+g7F+Hsng2tCzkYI7+H0cn74w3zNXQ7NNHi5FeQ+52eykQ8v0asfDwILq │ │ iPg/ZrJwnNabJce6igs40lLfTFU4qW5g8b/dkJxH7WQbd86r05YPvrLQEbDnZj9hj8Bdtz │ │ khHfoiRskUYFlGh1oe2ZrLo5AJqp60S1nnbuW0iTM/o/zv4Q0xP/lzVaj3AWJkMulUZz │ │ ct4slq2mmQAAA8gZnFEaGZxRGgAAAAdzc2gtcnNhAAABAQC8j0bjNWenteFDMM2nw6YL │ │ ... (Schlüssel gekürzt) ... │ │ dxndyc7ZgSkAAAAbsdWN5QG1lbW9yaWVzAQIDBA │ │ -----END OPENSSH PRIVATE KEY----- │ │ │ │ │ │ < Ok > │ └──────────────────────────────────────────────────────────────────────────────┘
Bewertung: Der Exploit funktioniert. Durch Ausführen von `whiptail --textbox` als `lucy` kann `laura` den Inhalt des privaten SSH-Schlüssels von `lucy` lesen. Dieser Schlüssel scheint nicht passwortgeschützt zu sein.
Analyse Fortsetzung:** Der Schlüssel von `lucy` wird extrahiert, in `lucyrsa` gespeichert und die Berechtigungen gesetzt.
Analyse Fortsetzung:** Es wird sich per SSH als `lucy` mit dem extrahierten Schlüssel angemeldet.
Linux memories 4.19.0-14-amd64 #1 SMP Debian 4.19.171-2 (2021-01-30) x86_64 ... Last login: Mon Mar 22 03:37:16 2021 from 192.168.1.58
Bewertung: Die Privilegieneskalation von `laura` zu `lucy` war erfolgreich, indem eine unsichere `sudo`-Regel für `whiptail` ausgenutzt wurde, um Lucys privaten SSH-Schlüssel zu lesen.
Empfehlung (Pentester):** Lesen Sie nun die User-Flag als `lucy` (`cat user.txt`). Überprüfen Sie die `sudo`-Rechte für `lucy`, um den nächsten Eskalationsschritt zu finden.
Empfehlung (Admin):** Gewähren Sie niemals `sudo`-Rechte für Programme wie `whiptail`, die zum Lesen beliebiger Dateien missbraucht werden können, insbesondere nicht mit `NPASSWD`. Konfigurieren Sie `sudo` nach dem Prinzip der geringsten Rechte.
Analyse: Als Benutzer `lucy` werden die `sudo`-Rechte überprüft.
Matching Defaults entries for lucy on memories:
env_reset, mail_badpass, secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin
User lucy may run the following commands on memories:
(ALL : ALL) NOPASSWD: /usr/bin/gcore
Bewertung: Kritischer Fund! `lucy` darf `/usr/bin/gcore` als jeder Benutzer (`ALL`) und jede Gruppe (`ALL`), einschließlich Root, ohne Passwort (`NOPASSWD`) ausführen. `gcore` erstellt einen Core-Dump (Speicherabbild) eines laufenden Prozesses. Da `lucy` `gcore` als Root ausführen kann, kann sie Speicherabbilder von Root-Prozessen erstellen. Diese Abbilder können sensible Informationen wie Passwörter oder Schlüssel enthalten.
Analyse Fortsetzung:** Die User-Flag wird gelesen.
imissingsomething
Bewertung: Das User-Flag für `lucy` lautet `imissingsomething`. (Hinweis: Der vorherige Text zeigte ein anderes User-Flag für `icex64`. Hier wird das Flag für `lucy` gefunden).
Analyse Fortsetzung:** Es wird versucht, die `sudo gcore`-Berechtigung auszunutzen. Ein `while true`-Loop wird gestartet, der kontinuierlich versucht, mit `gcore` einen Core-Dump von Prozessen zu erstellen, deren Namen "memories" enthalten (`ps aux | grep memories | awk {'print $2'} | xargs sudo /usr/bin/gcore`). Das Ziel ist, einen kurzlebigen Root-Prozess namens "memories" zu erwischen.
ptrace: No such process.
You can't do that without a process to debug.
The program is not being run.
gcore: failed to create core.15975
ptrace: No such process.
... (Viele Fehler, bis der Prozess läuft) ...
[Core dump wird erfolgreich erstellt, z.B. core.15355]
Analyse Fortsetzung:** Nachdem erfolgreich Core-Dumps (z.B. `core.15353`, `core.15355`) erstellt wurden, werden diese mit `strings` nach interessanten Inhalten durchsucht.
core.15353 core.15355 flag.sh user.txt
... /root/memories ... /usr/lib/x86_64-linux-gnu/libc-2.28.so /usr/lib/x86_64-linux-gnu/ld-2.28.so ... ::::::::::::::::::::::::::::::::::::::::::::::::: My password is whataboutyourthinking ::::::::::::::::::::::::::::::::::::::::::::::::: ...
Bewertung: Der Angriff war erfolgreich! Der Core-Dump des Prozesses `/root/memories` (der wahrscheinlich als Root lief) wurde erstellt. Die Analyse mit `strings` enthüllt das Root-Passwort im Klartext: `whataboutyourthinking`.
Analyse Fortsetzung:** Mit dem gefundenen Root-Passwort wird mittels `su root` zu Root gewechselt.
Password: [Passwort whataboutyourthinking eingegeben]
Analyse Fortsetzung:** Das Root-Flag wird gelesen.
flag.sh memories memories.c ro0t.txt
HMVtakingthisgames
Bewertung: Die Privilegieneskalation zu Root war erfolgreich durch Ausnutzung der `sudo gcore`-Berechtigung zum Auslesen des Root-Passworts aus dem Speicher eines Root-Prozesses. Das Root-Flag (`ro0t.txt`) wurde gefunden und gelesen.
Empfehlung (Pentester):** Dokumentieren Sie die Privilegieneskalation über `sudo gcore`.
Empfehlung (Admin):** Entfernen Sie die `sudo`-Berechtigung für `gcore`. Gewähren Sie `sudo`-Rechte nur für absolut notwendige Befehle. Speichern Sie Passwörter niemals im Klartext im Speicher von Prozessen. Verwenden Sie sichere Methoden zur Authentifizierung und Speicherung von Credentials.
Kurzbeschreibung: Dieser POC beschreibt die Eskalationskette: Zugriff auf ein geschütztes Webverzeichnis (`/memories`) durch Erraten von Standard-Basic-Auth-Credentials, Fund eines SSH-Keys auf der Seite, SSH-Login als `laura`, Eskalation zu `lucy` durch Ausnutzung einer unsicheren `sudo`-Regel für `whiptail` zum Lesen von Lucys SSH-Key, und schließlich Eskalation zu Root durch Ausnutzung einer unsicheren `sudo`-Regel für `gcore` zum Auslesen des Root-Passworts aus dem Speicher.
Schwachstellen: Schwache Basic Auth Credentials, Preisgabe eines privaten SSH-Keys.
Schritte:
Ergebnis: Shell als Benutzer `laura`.
Schwachstelle: Unsichere `sudo`-Regel: `(lucy) NPASSWD: /usr/bin/whiptail`.
Voraussetzungen: Shell als `laura`.
Schritte:
Ergebnis: Shell als Benutzer `lucy`.
Schwachstelle: Unsichere `sudo`-Regel: `(ALL : ALL) NPASSWD: /usr/bin/gcore`, Klartextpasswort im Speicher.
Voraussetzungen: Shell als `lucy`.
Schritte:
Ergebnis: Root-Shell.
Beweismittel: Erfolgreicher `su`-Befehl, Lesen von `/root/ro0t.txt` möglich.
Risikobewertung: Hoch. Eine Kette von Fehlkonfigurationen (schwache Basic Auth, exponierter Key, unsichere `sudo`-Regeln) und einer Schwachstelle (Klartextpasswort im Speicher) ermöglicht die vollständige Kompromittierung des Systems.
Empfehlungen:** * **Admin:** Basic Auth härten/ersetzen. Secrets nicht im Webroot speichern. `sudo`-Regeln extrem restriktiv gestalten (kein `whiptail`, kein `gcore`, kein `ALL:ALL NOPASSWD`). Passwörter niemals im Klartext im Speicher halten. * **Pentester:** Die einzelnen Eskalationsschritte und die zugrundeliegenden Fehlkonfigurationen klar dokumentieren.